C++ Modern (C++11/14/17) memperkenalkan Abstraksi Tanpa Biaya yang menghubungkan jurang antara kontrol perangkat keras tingkat rendah dan kemudahan bacaan tingkat tinggi. Efisiensi dicapai melalui manajemen memori yang deterministik, sementara ekspresivitas ditingkatkan melalui logika pada saat kompilasi.
1. Tata Letak Memori: std::array vs. std::vector
std::array adalah pembungkus modern untuk array gaya C, dialokasikan di stack dengan ukuran tetap yang diketahui saat kompilasi. Sebaliknya, std::vector berada di heap dan tumbuh secara dinamis. Meskipun std::vector menggunakan faktor pertumbuhan geometris (sering kali $1.5\times$ atau $2\times$), C++ modern menyediakan shrink_to_fit() untuk mengembalikan kapasitas yang tidak digunakan, memberikan kendali lebih ketat dibandingkan bahasa terkelola seperti Golang.
2. SFINAE & Keamanan Tipe
Melalui std::enable_if dan std::is_enum, pengembang dapat menerapkan Kegagalan Substitusi Bukan Kesalahan (SFINAE). Ini memungkinkan kompiler memilih overload fungsi tertentu berdasarkan ciri tipe saat kompilasi, seperti membuat operator aliran universal untuk enum menggunakan std::underlying_type.
v.push_back(std::move(obj)); // Semantik pindah
arr.at(0); // Pemeriksaan batas